package net.wangds.utils;


import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sha1Utils {

    /**
     * 字符串的sha1.
     * @param plainText 输入字符串.
     * @return sha1(utf8编码).
     */
    public static String sha1(String plainText) {
        return sha1(plainText, StandardCharsets.UTF_8);
    }

    /**
     * 字符串的sha1.
     * @param plainText 输入字符串.
     * @param encode 字符集.
     * @return sha1.
     * @see #sha1(String, Charset)
     */
    @Deprecated
    public static String sha1(String plainText, String encode) {
        try {
            return sha1(plainText.getBytes(encode));
        } catch (UnsupportedEncodingException e) {
            return "";
        }
    }

    /**
     * 字符串的sha1.
     * @param plainText 输入字符串.
     * @param charset 字符集.
     * @return sha1.
     */
    public static String sha1(String plainText, Charset charset) {
        return sha1(plainText.getBytes(charset));
    }


    /**
     * 数据的sha1.
     * @param data 输入字符串.
     * @return sha1.
     */
    public static String sha1(byte[] data) {
        //定义一个字节数组
        byte[] secretBytes = null;
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("SHA1");
            //对字符串进行加密
            md.update(data);
            //获得加密后的数据
            secretBytes = md.digest();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("没有sha1这个算法");
        }

        return HexUtils.bytes2HexString(secretBytes);
    }

}
